home *** CD-ROM | disk | FTP | other *** search
- 10 clr:dim ch(50),l(200),c(6),t$(50),cl$(6,26),sp$(20),in$(200)
- 20 ai$="[201]nvalid [193]nswer!":poke 53280,0:poke 53281,0
- 30 lt=200:sp$(1)=" ":for x=2 to 20:sp$(x)=sp$(x-1)+" ":next:print"";
- 40 print"[147]"
- 50 s$="[208]resenting":gosub 2200:print:s$="[207]utline [199]enerator":gosub 2220
- 60 print:s$="by":gosub 2200:print:s$="[196]avid [204]eithauser":gosub 2200
- 70 print:print:s$="[195]opyright 1988 by [211]oftdisk [208]ublishing":gosub 2200:print:print
- 80 for x=1 to 26
- 90 read cl$(1,x):cl$(2,x)=chr$(96+x)+".":cl$(3,x)=mid$(str$(x),2)+"."
- 100 cl$(4,x)=chr$(64+x)+".":cl$(5,x)="("+mid$(str$(x),2)+")"
- 110 cl$(6,x)="("+chr$(64+x)+")"
- 120 next
- 130 data "[201].","[201][201].","[201][201][201].","[201][214].","[214].","[214][201].","[214][201][201].","[214][201][201][201]."
- 140 data "[201][216].","[216].","[216][201].","[216][201][201].","[216][201][201][201].","[216][201][214].","[216][214]."
- 150 data "[216][214][201].","[216][214][201][201].","[216][214][201][201][201].","[216][201][216].","[216][216].","[216][216][201]."
- 160 data "[216][216][201][201].","[216][216][201][201][201].","[216][216][201][214].","[216][216][214].","[216][216][214][201]."
- 170 print"[159]":s$="[204]oad file from disk":gosub 2060
- 180 if yn=0 then 260
- 190 print:print"[154][198]ile name (just [210][197][212][213][210][206] aborts)?":print">";:gosub 2500:f$=i$
- 200 if f$="" then 260
- 210 t=0:open 1,8,2,f$+",s,r":input#1,t:if t>0 then 230
- 220 close 1:s$="[158][198]ile invalid or not found.":gosub 2200:goto 170
- 230 for x=0 to t:input#1,in$(x):input#1,l(x):next
- 240 close 1:ds=-1:goto 800
- 250 rem create file
- 260 print "[147][154]"
- 270 s$="[215]hat is the name of your project?":gosub 2200:print
- 280 print">";
- 290 gosub 2500:in$(0)=i$:if in$(0)<>"" then 310
- 300 print"[147][158]":s$="[201]nput project name.":gosub 2200:print">";:goto 290
- 310 print"[147]";
- 320 ll=0:ul=0:gosub 330:goto 800
- 330 l=l+1
- 340 dc=0:n=ll
- 350 s=n+1
- 360 if l(n)<l-1 or l(n)>5 then 760
- 370 if l(n)<2 then 420
- 380 for ts=n to 1 step -1
- 390 if l(ts)=1 then 410
- 400 next
- 410 tl=n:gd=1:yn=0:print"[147]";:gosub 1120:print
- 420 ns=0:s$="[215]hat are the steps/subdivisions of":gosub 2200
- 430 sn$=chr$(34)+in$(n)+chr$(34):s$=sn$+"?":gosub 2200
- 440 s$="[158][208]ress just [210][197][212][213][210][206] when finished. ":gosub 2200
- 450 print">";
- 460 gosub 2500:a$=i$
- 470 if a$="" then 540
- 480 if t=lt then gosub 2270:return
- 490 for x=t+1 to n+2 step -1:in$(x)=in$(x-1):l(x)=l(x-1):next
- 500 n=n+1:t=t+1:ul=ul+1:l(n)=l:in$(n)=a$:dc=-1
- 510 ns=ns+1:if ns<26 then 450
- 520 gosub 7040:s$="[206]o more subdivisions allowed for":gosub 2200
- 530 s$=sn$:gosub 2200:gosub 2320:print chr$(147);
- 540 if n-s<1 then 760
- 550 s$="[196]o these steps need to be in any":gosub 2200
- 560 s$="particular order":gosub 2060
- 570 if yn=0 then 760
- 580 s$="[193]re these steps in the correct":gosub 2200
- 590 s$="order now":gosub 2060
- 600 if yn then 760
- 610 gosub 2130
- 620 for x=0 to c:t$(x)=in$(s+x):next:for x=0 to 50:ch(x)=0:next
- 630 print"[215]hich of these should be first ([201]nput number)";
- 640 for x=0 to c
- 650 gosub 2500:f=val(i$)
- 660 if f=>1 and f<=c+1 then 680
- 670 s$="[158][201]nvalid number!":gosub 2200:print"";:goto 650
- 680 if ch(f)=0 then 710
- 690 s$="[158][193]lready taken.":gosub 2200:print"";
- 700 print "[195]orrect number";:goto 650
- 710 in$(s+x)=t$(f-1):ch(f)=-1
- 720 if x<c then print "[206]ext";
- 730 next
- 740 gosub 2130
- 750 goto 580
- 760 print"[147]";:n=n+1:if n<=ul then 350
- 770 if dc then 330
- 780 return
- 790 rem menu
- 800 print"[147]":s$="[205]ain [205]enu":gosub 2220:print
- 810 s$="1) [207]utput [207]utline ":gosub 2200
- 820 s$="2) [211]ave [207]utline to [196]isk ":gosub 2200
- 830 s$="3) [205]odify [207]utline ":gosub 2200
- 840 s$="4) [211]tart or [204]oad [193]nother [207]utline":gosub 2200
- 850 s$="5) [197]xit to [213]p[212]ime ":gosub 2200
- 860 print"":s$=" [206]umber of your choice? ":gosub 2260
- 870 get a$
- 880 if a$<"1" or a$>"5" then 870
- 890 print a$:on val(a$) goto 910,1220,1290,1940,1970
- 910 print "[147]":s$="[207]utput to:":gosub 2200:print:s$="1) [211]creen ":gosub 2200
- 920 s$="2) [208]rinter":gosub 2200:s$="3) [196]isk ":gosub 2200:print
- 930 printtab(8)"[154][206]umber of your choice? ";
- 940 get s$:if s$<"1" or s$>"3" then 940
- 950 print s$:gd=val(s$):if gd=1 then 1030
- 960 if gd=2 then 1020
- 970 print "[198]ile name? ";:gosub 2360:f$=i$:if f$="" then 970
- 980 open 1,8,2,"@:"+f$+",s,w"
- 990 ts=1:tl=t:yn=0:print#1,"[208]roject: "+in$(0):gosub 1110
- 1000 close 1
- 1010 gd=1:goto 800
- 1020 print chr$(147);:s$="[208]reparing to print outline":print
- 1030 print:s$="[196]o you want line numbers":gosub 2060
- 1040 if gd<>2 then 1060
- 1050 s$="[208]repare printer, then press space bar.":gosub 2200:gosub 2330:open 1,4
- 1060 ts=1:tl=t:gosub 1100
- 1070 if gd=1 then gosub 2320
- 1080 if gd=2 then close 1:gd=1
- 1090 goto 800
- 1100 if gd=2 then print#1," [208]roject: ";in$(0):print#1,""
- 1110 print"[147]";:s$="[208]roject: "+in$(0):gosub 2200:print
- 1120 for x=1 to tl
- 1130 c(l(x))=c(l(x))+1:if l(x)>l(x-1) then c(l(x))=1
- 1140 a$=sp$(2*l(x)-2)+cl$(l(x),c(l(x)))+" "+in$(x)
- 1150 if yn then a$=mid$(str$(x),2)+sp$(4-len(str$(x)))+a$
- 1160 if x=>ts then print a$:if gd>1 then print#1,a$
- 1170 if gd>1 then 1190
- 1180 if peek(214)>21 and x<tl then gosub 2320:print"[147]";
- 1190 next
- 1200 return
- 1210 rem save outline on disk
- 1220 gosub 1230:goto 800
- 1230 s$="[198]ile name? ":gosub 2260:gosub 2500:f$=i$
- 1240 close 1:open 1,8,2,"@:"+f$+",s,w"
- 1250 print#1,t
- 1260 for x=0 to t:print#1,chr$(34)+in$(x)+chr$(34):print#1,l(x):next
- 1270 close 1:ds=-1:return
- 1280 rem modify outline
- 1290 print"[147]":s$="[205]odify [207]utline [205]enu":gosub 2220:print
- 1300 s$="1) [195]hange line ":gosub 2200
- 1310 s$="2) [196]elete line ":gosub 2200
- 1320 s$="3) [201]nsert after line ":gosub 2200
- 1330 s$="4) [201]nsert before line ":gosub 2200
- 1340 s$="5) [201]nsert subdivisions":gosub 2200
- 1350 s$="6) [196]isplay outline ":gosub 2200
- 1360 s$="7) [197]nd modifications ":gosub 2200
- 1370 print"":s$=" [206]umber of your choice? ":gosub 2260
- 1380 get a$:if a$<"1" or a$>"7" then 1380
- 1390 ds=0:print a$:print
- 1400 if a$>"5" then 1430
- 1410 print "[147][158]";:s$="[210][197][212][213][210][206] alone aborts modification"
- 1420 gosub 2200:print"";
- 1430 on val(a$) goto 1440,1500,1590,1720,1830,1910,800
- 1440 s$="[204]ine number to change? ":gosub 2260:gosub 2500:ln=val(i$)
- 1442 if ln=0 then 1290
- 1450 if ln<0 or ln>t then gosub 2350:goto 1440
- 1460 s$="[204]ine reads:":gosub 2200:print:s$=in$(ln):gosub 2200
- 1470 print:s$="[206]ew line?":gosub 2200:print"";
- 1480 gosub 2500:a$=i$:if a$="" then 1290
- 1490 in$(ln)=a$:goto 1290
- 1500 s$="[204]ine number to delete? ":gosub 2260:gosub 2500:ln=val(i$)
- 1502 if ln=0 then 1290
- 1510 if ln<0 or ln>t then gosub 2350:goto 1500
- 1520 s$="[204]ine reads:":gosub 2200:s$=in$(ln):gosub 2200
- 1530 s$="[196]elete":gosub 2060:if yn=0 then 1500
- 1540 ll=l(ln):for x=ln to t-1:in$(x)=in$(x+1):l(x)=l(x+1):next
- 1550 in$(t)="":l(t)=0:t=t-1
- 1560 if l(ln)<=ll then 1290
- 1570 for x=ln to t-1:in$(x)=in$(x+1):l(x)=l(x+1):next x
- 1580 in$(t)="":l(t)=0:t=t-1:goto 1560
- 1590 if t=lt then gosub 2270:goto 1290
- 1600 s$="[201]nsert after which line number? ":gosub 2260
- 1610 gosub 2500:ln=val(i$):if ln=0 then 1290
- 1620 if ln<0 or ln>t then gosub 2350:goto 1590
- 1630 s$="[201]nserting after":gosub 2200
- 1640 s$=in$(ln):gosub 2200:print"";
- 1650 s$="[201]nsert what?":gosub 2200
- 1660 print"";:gosub 2500:a$=i$:if a$="" then 1290
- 1670 l=l(ln)
- 1680 if l<l(ln+1) then ln=ln+1:goto 1680
- 1690 for x=t+1 to ln+2 step -1:in$(x)=in$(x-1):l(x)=l(x-1):next x:t=t+1
- 1700 in$(ln+1)=a$:l(ln+1)=l
- 1710 print chr$(147);:ll=ln+1:ul=ln+1:gosub 330:goto 1290
- 1720 if t=lt then gosub 2270:goto 1290
- 1730 s$="[201]nsert before which line? ":gosub 2260
- 1740 gosub 2500:ln=val(i$):if ln=0 then 1290
- 1750 if ln<0 or ln>t then gosub 2350:goto 1720
- 1760 s$="[201]nserting before":gosub 2200
- 1770 s$=in$(ln):gosub 2200:print"";
- 1780 s$="[201]nsert what?":gosub 2200
- 1790 print"";:gosub 2500:a$=i$:if a$="" then 1290
- 1800 for x=t+1 to ln+1 step -1:in$(x)=in$(x-1):l(x)=l(x-1):next x:t=t+1
- 1810 in$(ln)=a$
- 1820 print"[147]";:l=l(ln):ll=ln:ul=ln:gosub 330:goto 1290
- 1830 if t=lt then gosub 2270:goto 1290
- 1840 s$="[204]ine number to insert":gosub 2200:s$="subdivisions for? ":gosub 2260
- 1850 gosub 2500:ln=val(i$):if ln=0 then 1290
- 1860 if l(ln)<6 then 1890
- 1870 s$="[158][206]o subdivisions of this level allowed!":gosub 2200
- 1880 gosub 2320:goto 1290
- 1890 if ln<0 or ln>lt then gosub 2350:goto 1830
- 1900 goto 1820
- 1910 print"[147]";:gd=1:yn=-1:tl=t:ts=1:gosub 1120
- 1920 gosub 2320
- 1930 goto 1290
- 1940 if ds then run
- 1950 gosub 2020:if yn then gosub 1230
- 1960 run
- 1970 print"[159]":s$="[197]xit [207]utline [199]enerator":gosub 2060
- 1980 if yn=0 then 800
- 1990 if ds then 2010
- 2000 gosub 2020:if yn then gosub 1230
- 2010 sys32774 : rem return to uptime
- 2020 print:print:s$="[196]ata has been modified since it was":gosub 2200
- 2030 s$="last saved on disk. [196]o you want to":gosub 2200
- 2040 s$="save it before destroying it":gosub 2060
- 2050 return
- 2060 s$=s$+" ([217]/[206])? "
- 2070 print tab((40-len(s$))/2);s$;:yn=0:poke 198,0
- 2080 get h$:if h$<>"[217]" and h$<>"y" and h$<>"[206]" and h$<>"n" then 2080
- 2090 if h$="[217]" or h$="y" then yn=-1
- 2100 print h$
- 2110 return
- 2120 rem display portion of outline
- 2130 print "[147]";:s$="[208]resent order of steps is:":gosub 2200
- 2140 c=-1
- 2150 for x=s to n
- 2160 c=c+1
- 2170 print c+1") "in$(x)
- 2180 next
- 2190 return
- 2200 if len(s$)<39 then print tab((40-len(s$))/2);s$:return
- 2210 print s$:return
- 2220 print"":z1=((40-len(s$))/2)-1
- 2230 z$="":for z=1 to len(s$)+2:z$=z$+" ":next:print tab(z1);chr$(18);z$
- 2240 print tab(z1);chr$(18);" ";s$;" ":print tab(z1);chr$(18);z$
- 2250 print"":return
- 2260 print tab((40-len(s$))/2-1);s$;:return
- 2270 s$="[207]ut of memory. [206]o more additions":gosub 2200
- 2280 s$="to outline possible.":gosub 2200:gosub 2320:print"";:return
- 2320 print"[158]":s$="[208]ress [211]pacebar.":gosub 2260
- 2330 get z$:if z$<>" " then 2330
- 2340 return
- 2350 s$=ai$:print"";:gosub 2200:print"";:return
- 2500 i$="":print"[164]";
- 2510 get ii$:if ii$="" then 2510
- 2520 if ii$=chr$(13) then printchr$(20):return
- 2530 if ii$=chr$(20) and i$="" then 2510
- 2540 if ii$=chr$(20) then i$=left$(i$,len(i$)-1):printii$;ii$"[164]";
- 2550 if ii$<" " or ii$>"[218]" then 2510
- 2560 if ii$>"z" and ii$<"[193]" then 2510
- 2570 if ii$=chr$(34) then 2510
- 2580 if len(i$)=20 then 2510
- 2590 print"[157]"ii$"[164]";:i$=i$+ii$:goto 2510
-